C++ int转char[],自己编的函数有点问题,请教!

来源:百度知道 编辑:UC知道 时间:2024/05/29 10:12:39
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
//获取整形位数
int digit(int x)
{
int sum=1;
for (int i=x;(i/=10)>0;sum++);
return sum;
}

void Int2Str(int a,char sz[])
{
//所需数
int num=a;
//该数位数
int num_digit=digit(a);
//循环长度
int length=digit(a);
for (int i=0;i<length;i++)
{
num_digit=digit(num);
int m=1;
int n=1;
for(;num_digit>1;num_digit--)
{
m*=10;
n*=10;
}
m=num/m;
//cout<<num<<endl;
num-=n*m;
sz[i]=m+48;
}
}

void main()
{
char sz [100];
Int2Str(78106456,sz);
cout<<sz<<endl;
system("pause");
}

自己写的,刚发现中间遇到0数时不能取值,而且最后会加上一个0,传入的数组不包含0的话,就没问题了。暂时没想到什么好办法,请达人指教!!

我给你改了一下,不怕有多少0. 不过我有一种更简单的整数转字符串看最后面itostr(int a, s[]);

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;

//获取整形位数
int digit(int x)
{
int sum=1;
for (int i=x;(i/=10)>0;sum++);
return sum;
}

void Int2Str(int a,char sz[])
{
//所需数
int num=a;
//循环长度
int length = digit(a);
//该数位数
int num_digit = length;
int pre_num_digit;

for (int i = 0; i < length; i++)
{
num_digit = digit(num);

pre_num_digit = num_digit;

int m=1;
int n=1;
int count = 0;
for(; num_digit > 1; num_digit--)
{
m *= 10;
n *= 10;
}
m = num / m;
num -= n * m;
sz[i] = m + 48;
count = pre_num_digit - digit(num) - 1;
while(count > 0)
{
sz[++i] = 48;
count --;
}